/* Parallelizers.h
 * 
 *  Author          : Alexander J. Yee
 *  Date Created    : 02/19/2017
 *  Last Modified   : 02/19/2017
 * 
 *      This provides global instantiations of various parallel frameworks.
 * 
 *  Not all frameworks are available everywhere. If a framework is not available,
 *  referencing it will linker error.
 * 
 */

#pragma once
#ifndef ymp_Concurrency_Parallelizers_H
#define ymp_Concurrency_Parallelizers_H
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//  Dependencies
#include "PublicLibs/BasicLibs/Concurrency/BasicParallelizer.h"
namespace ymp{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
extern BasicParallelizer& parallelizer_default;
////////////////////////////////////////////////////////////////////////////////
extern BasicParallelizer& parallelizer_none;
extern BasicParallelizer& parallelizer_cppasync;
extern BasicParallelizer& parallelizer_winpool;     //  Only available on Windows.
extern BasicParallelizer& parallelizer_cilk;        //  Only available if "YMP_ENABLE_CILK" is defined.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
#endif
